package com.prd.service;

import com.prd.dto.OaOfferLetterDTO;
import com.prd.model.OaOfferLetterDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.prd.util.JsonData;

/**
 * <p>
 * 录用通知书 服务类
 * </p>
 *
 * @author lizhaoyi
 * @since 2023-12-24
 */
public interface OaOfferLetterService extends IService<OaOfferLetterDO> {


    /**
     * 添加录用通知书
     * @param oaOfferLetterDTO
     * @return
     */
    JsonData addOfferLetter(OaOfferLetterDTO oaOfferLetterDTO);

    /**
     * 录用通知详情
     * @param id
     * @return
     */
    JsonData detail(String id);

    /**
     * 审核意见
     * @param oaOfferLetterDTO
     * @return
     */
    JsonData viewerAgree(OaOfferLetterDTO oaOfferLetterDTO);

    /**
     * 审核意见-撤销
     * @param oaOfferLetterDTO
     * @return
     */
    JsonData viewerCancel(OaOfferLetterDTO oaOfferLetterDTO);


    /**
     * 人事确认
     * @param oaOfferLetterDTO
     * @return
     */
    JsonData hrConfirm(OaOfferLetterDTO oaOfferLetterDTO);

    /**
     * 入职人员确认
     * @param oaOfferLetterDTO
     * @return
     */
    JsonData employerConfirm(OaOfferLetterDTO oaOfferLetterDTO);

    /**
     * 批准通过
     * @param oaOfferLetterDTO
     * @return
     */
    JsonData approveAgree(OaOfferLetterDTO oaOfferLetterDTO);

    /**
     * 批准不通过
     * @param oaOfferLetterDTO
     * @return
     */
    JsonData approveReject(OaOfferLetterDTO oaOfferLetterDTO);

    /**
     * 职务变动列表
     * @return
     */
    JsonData getList();

    /**
     * 根据类型查询依据列表
     * @param type
     * @return
     */
    JsonData getBasisListByType(Integer type);

    /**
     * 确认入职
     * @param oaOfferLetterDTO
     * @return
     */
    JsonData confirm(OaOfferLetterDTO oaOfferLetterDTO);

    /**
     * 放弃入职
     * @param oaOfferLetterDTO
     * @return
     */
    JsonData confirmGiveUp(OaOfferLetterDTO oaOfferLetterDTO);

    /**
     * 退回
     * @param oaOfferLetterDTO
     * @return
     */
    JsonData callback(OaOfferLetterDTO oaOfferLetterDTO);

    /**
     * 撤销
     * @param oaOfferLetterDTO
     * @return
     */
    JsonData cancel(OaOfferLetterDTO oaOfferLetterDTO);


    /**
     * 入职-审核意见确认上传
     * @param oaOfferLetterDTO
     * @return
     */
    JsonData entryReview(OaOfferLetterDTO oaOfferLetterDTO);

    /**
     * 入职-审核通过
     * @param oaOfferLetterDTO
     * @return
     */
    JsonData entryApprovePass(OaOfferLetterDTO oaOfferLetterDTO);

    /**
     * 入职-审核不通过
     * @param oaOfferLetterDTO
     * @return
     */
    JsonData entryApproveRefuse(OaOfferLetterDTO oaOfferLetterDTO);

    /**
     * 新增任命书
     * @param oaOfferLetterDTO
     * @return
     */
    JsonData newBook(OaOfferLetterDTO oaOfferLetterDTO);

    /**
     * 入职-任命书审核意见确认上传
     * @param oaOfferLetterDTO
     * @return
     */
    JsonData entryBookReview(OaOfferLetterDTO oaOfferLetterDTO);

    /**
     * 入职-任命书审批通过
     * @param oaOfferLetterDTO
     * @return
     */
    JsonData entryBookApprovePass(OaOfferLetterDTO oaOfferLetterDTO);

    /**
     * 入职-任命书审批驳回
     * @param oaOfferLetterDTO
     * @return
     */
    JsonData entryBookApproveRefuse(OaOfferLetterDTO oaOfferLetterDTO);

    /**
     * 入职-人员安排通知单
     * @param oaOfferLetterDTO
     * @return
     */
    JsonData entryPersonLetter(OaOfferLetterDTO oaOfferLetterDTO);

    /**
     * 入职-报到
     * @param oaOfferLetterDTO
     * @return
     */
    JsonData entryPersonCheckIn(OaOfferLetterDTO oaOfferLetterDTO);

    /**
     * 入职-确认报到
     * @param oaOfferLetterDTO
     * @return
     */
    JsonData entryCheckIn(OaOfferLetterDTO oaOfferLetterDTO);
}
